[t:/]$ 지식_

NAT안에서 외부 프락시를 투명하게 쓰기

2008/11/18

네트워크 원리와 iptables를 능수능란하게 쓰는 사람이라면 후닥닥 되는 내용인데, 네떡에서 손 뗀지가 오래되서 많이 헤맸다.

목표

사내에서 강제로 쓰도록 되어 있는 프락시 서버를 NAT 구성 안쪽에서 투명하게 넘기

구성

(1.인터넷) <---> (2.사내 프락시) <---> (3.리눅스 서버에서 IP공유) <---> (4.NAT 내부망 사설 IP)

여기서 NAT 내부망 사설IP에 연결된 디바이스들이 따로 프락시 설정을 하지 않고도 리눅스 서버에서 공유한 IP를 통해 프락시를 넘도록 만드는 구성안이다.

시작

ip alias는 피하도록 하고 일단 이더넷 카드를 리눅스에 두 개 박자.

우분투에서 NAT 구성은 쉽다. 물리적인 환경은 다음과 같다.

eth0 : 사설IP
eth1 : 공인IP

부여후 ipmasq 를 실행하면 알아서 NAT가 구성된다. 여기서는 eth0에 192.168.123.123 을 주었다.

ipmasq가 없다면

apt-get install ipmasq

이리저리 ping을 때렸는데 잘 안 된다면.

ifconfig eth0 down
ifconfig eth0 up
ipmasq

dhcp를 구성해보자. 시냅틱 관리자에서 dhcp3-server 및 관련 툴을 깔자. 설정 만지기가 귀찮으니까 gui화 된 툴을 깔자.

apt-get install gdhcpd

아 우분투 내장 패키지는 이렇게 좋구나.. 대충 구성하고 apply 때린다. 이제 NAT 망안에 들어갈 무선AP를 eth0 내부망에 물리고 켠다. dhclient 를 실행하거나 dhcp라면 알아서 IP를 받아먹는다.

자 이제 본론인 eth1 (외부망) 밖에 있는 강제 사용 프락시를 투명하게 넘어보자.

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to X.X.X.X:8080

-t nat : 형식이 NAT임 (주소변환)
-A PREROUTING : 라우팅 전에 주소변환 (당연히 프락시로 보내기 전이니까)
-p tcp : TCP 프로토콜
--dport 80 : 웹 포트인 80포트가 목적 포트고, 즉 http://....... 리퀘스트가 발생하면
-i eth0 : eth0 (사설 IP NAT망) 에서 입력이면
-j DNAT : 목적지 변환으로
--to X.X.X.X:8080 프락시 서버로 목적지를 바꾼다.

여기서 X.X.X.X 는 사내 강제 사용 프락시의 주소이다.

결과. 내부망 사설 IP 대역 192.168.123.x 의 컴퓨터는 웹을 쓸 때 따로 프락시 설정을 하지 않아도 된다.

MMS쪽 스트리밍을 열어주려면 역시 모조리 다 보내자.

Microsoft Media Server, with TCP-based transport (MMST) 라면.

iptables -t nat -A PREROUTING -p tcp --dport 1755 -i eth0 -j DNAT --to X.X.X.X:8080

Microsoft Media Server, with UDP-based transport (MMSU) 라면.

iptables -t nat -A PREROUTING -p tcp --dport 1755 -i eth0 -j DNAT --to X.X.X.X:8080
iptables -t nat -A PREROUTING -p udp --dport 1755 -i eth0 -j DNAT --to X.X.X.X:8080

에라 모르겠다 다 열자.

iptables -t nat -A PREROUTING -p tcp -i eth0 -j DNAT --to X.X.X.X:8080
iptables -t nat -A PREROUTING -p udp -i eth0 -j DNAT --to X.X.X.X:8080

그렇다면 걍 리눅스 서버쪽 파폭이고 뭐고 걍 다 프락시 설정없이 쓰게 하자.

iptables -t nat -A PREROUTING -p udp -i eth1 -j DNAT --to X.X.X.X:8080
iptables -t nat -A PREROUTING -p tcp -i eth1 -j DNAT --to X.X.X.X:8080

끝.

iptables에 대해서 더 자세히 알고 싶다면 에이콘의 리눅스 방화벽을 읽으세요.





공유하기













[t:/] is not "technology - root". dawnsea, rss